
#include "Util.h"

Util::Util() {
	m_fontColor = FontColor();
}

void Util::log(const std::string info, ...) {
	va_list args;
	va_start(args, info);
	Format(info.c_str(), "Info", FC_GREEN, args);
}

void Util::warn(const std::string info, ...) {
	va_list args;
	va_start(args, info);
	Format(info.c_str(), "Warn", FC_YELLOW, args);
}

void Util::err(const std::string info, ...) {
	va_list args;
	va_start(args, info);
	Format(info.c_str(), "Erro", FC_RED, args, true);
}

void Util::Format(const char * format, std::string tag, int color, va_list args, bool isfull) {
	struct timeb tb;
	ftime(&tb);
	char timestr[128];
	tm* local = localtime(&tb.time);
	strftime(timestr, 64, "%m-%d %H:%M:%S", local);

	m_fontColor.SetColor(color);
	printf("[%s.%3d] [%s] - ", timestr, tb.millitm, tag.c_str());

	m_fontColor.SetColor(color);

	if (isfull) {
		vprintf(format, args);
		m_fontColor.UnSetColor();
	}
	else {
		m_fontColor.UnSetColor();
		vprintf(format, args);
	}
	printf("\n");
}